package leetcode;

/**
 * 练习题.
 * 7.整数反转
 *
 * @author :yanlixiong
 * @date :2024-02-25 11:50:00
 */
public class Exercises1 {

    public static void main(String[] args) {
        int[] testData = {123, -123, 120, 0};
        for (int x : testData) {
            System.out.println("输入：x=" + x);
            System.out.println("输出：" + reverse(x));
            System.out.println("");
        }
    }

    public static int reverse(int x) {
        //如果输入的x是个位数，那么直接将输入值返回就行了
        if (x >= -9 && x <= 9) {
            return x;
        }
        /*
         *
         * 如果输入的x是其他数字的情况
         * 1、先将数字转成字符串
         * 2、利用StringBuilder的reverse()函数，进行字符串反转，同时将负号（-）去掉
         * 3、将反转之后的字符串转为Long类型 xL
         * 4、如果xL不在int范围内，则直接返回0
         * 5、如果x小于0，那么返回-xL，否则返回xL
         *
         */
        StringBuilder xs = new StringBuilder(String.valueOf(x));
        String reverses = xs.reverse().toString().replace("-", "");
        Long xL = Long.valueOf(reverses);
        if (xL < Integer.MIN_VALUE || xL > Integer.MAX_VALUE) {
            return 0;
        }
        if (x < 0) {
            return -xL.intValue();
        }
        return xL.intValue();
    }
}
